Enhanced multicast network communications

ABSTRACT

Methods, systems, apparatus, including computer programs encoded on computer storage media, for generating and routing modified multimedia data frames. In one aspect, the method includes maintaining, by a first network node, channel membership data that includes data indicating, for each channel of a plurality of channels, leaf node membership for a plurality of channels, and for each channel of the plurality of channels: determining, based on the channel membership data, the leaf nodes that are subscribed to access the channel, generating, based on the leaf nodes that are subscribed to access the channel, a modified multimedia data frame for the channel that includes (i) a hub node identifier, (ii) data that describes a destination address of each leaf node that is subscribed to access the channel and (iii) a payload, and transmitting, by the first network node, the generated modified multimedia data frame to a second network node.

CROSS REFERENCE TO RELATED APPLICATIONS

This U.S. patent application is a continuation of, and claims priorityunder 35 U.S.C. § 120 from, U.S. patent application Ser. No. 15/593,447,filed on May 12, 2017 The disclosures of this prior application isconsidered part of the disclosure of this application and is herebyincorporated by reference in its entirety.

BACKGROUND

Conventional networked communication of data frames in a Media AccessControl (MAC) layer typically includes either unicast or multicastcommunications. Each form of data frame communication has knowndrawbacks. Because of these drawbacks, an alternative form ofcommunication is required that accommodates generation and routing ofdata frames for services consuming large amounts of bandwidth such astelevision (TV) streaming services.

SUMMARY

Methods, systems, apparatus, including computer programs encoded oncomputer storage media, for generating and routing modified multimediadata frames. In one aspect, the method may include actions ofmaintaining, by a first network node, channel membership data thatincludes data indicating, for each channel of a plurality of channels,leaf node membership for a plurality of channels, and for each channelof the plurality of channels: determining, based on the channelmembership data, the leaf nodes that are subscribed to access thechannel, generating, based on the leaf nodes that are subscribed toaccess the channel, a modified multimedia data frame for the channelthat includes (i) a hub node identifier, (ii) data that describes adestination address of each leaf node that is subscribed to access thechannel and (iii) a payload, and transmitting, by the first networknode, the generated modified multimedia data frame to a second networknode.

Other versions include corresponding systems, apparatus, and computerprograms to perform the actions of methods, encoded on computer storagedevices.

These and other versions may optionally include one or more of thefollowing features. For instance, in some implementations, the modifiedmultimedia data frame includes a unicast data frame comprising a MACHeader and a payload and the MAC Header includes a destination addressfield.

In some implementations, generating a modified multimedia data frame mayinclude encoding a destination address for each leaf node that issubscribed to access the channel into an encoded bitmap of destinationaddresses, and populating the destination address field with the encodedbitmap of destination addresses.

In some implementations, the method may include receiving, by the secondnetwork node, at least one of the modified multimedia data frames,identifying, by the second network node based on the encoded bitmap ofdestination addresses, a number of subsequent network nodes that are adestination of the at least one modified multimedia data frame, and inresponse to determining that the number of subsequent network nodes isgreater than one network node, generating a modified multimedia dataframe that includes (i) data that describes a destination address ofeach of the subsequent network nodes and (ii) a copy of the payload.

In some implementations, the method may include receiving, by the secondnetwork node, at least one of the modified multimedia data frames,identifying, by the second network node based on the encoded bitmap ofdestination addresses, a number of subsequent network nodes that are adestination of the at least one modified multimedia data frame, and inresponse to determining that the number of subsequent network nodes isequal to one network node, generating a unicast data frame that includes(i) data that describes a destination address of the one subsequentnetwork node and (ii) a copy of the payload.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a contextual diagram of an example of a system for generatingand routing modified multimedia data frames.

FIG. 2 is a flowchart of an example of a process for generating modifiedmultimedia data frames.

FIG. 3 is a flowchart of an example of a process for routing modifiedmultimedia data frames.

FIG. 4 is a block diagram of components of a system for generating androuting modified multimedia data frames.

DETAILED DESCRIPTION

The present disclosure is directed towards a system and method forbroadcasting multimedia data frames such as television (TV) data frames.The present disclosure achieves advantages over conventional methods bygenerating modified multimedia data frames for use in conjunction withone or more membership table exchanges that may include, for example,data mapping a bitmap address to leaf network nodes. A modifiedmultimedia data frame may include, for example, a unicast data frameused to communicate data that is generated using a compact addressingscheme to encode data describing a destination address for each leafnetwork node of multiple leaf network nodes into a bitmap of destinationaddresses that can be inserted into the destination address field of theunicast data frame. The modified multimedia data frame and themembership table exchange allow for a reduction in bandwidth required tostream content such as TV content in relation to conventional unicasttransmissions. Moreover, the modified multimedia data frame andmembership exchange tables also allow for multicast-like data framebroadcasting using a unicast data frame that avoids the expensiveprocess of frequent recalculation of multicast spanning trees requiredby conventional multicast broadcasting.

FIG. 1 is a contextual diagram of an example of a system 100 forgenerating and routing modified multimedia data frames. The system 100includes a network 105, a plurality of network nodes including a primarynode 110, one or more hub nodes 112-1, 112-2, 112-n (where n is anypositive integer between 1 and 64), a wireless mesh network 120, andmultiple leaf nodes “A” 150, “B” 151, “C” 152, “D” 153, “E” 154, “F”155, “G” 156, “H” 157, “I” 158, “J” 159.

The primary node 110 is a network node that is positioned between anetwork 105 such as the Internet and one or more hub nodes 112-1, 112-2,112-n. The primary node 110 receives data such as wired data frames 107across a wired connection 102 and generates wireless data frames, wireddata frames, or both, for transmission to a wireless hub 112-1, 112-2,112-n. The primary node may include, for example, a fiber hut, anoptical network unit, a multimedia feed server, a TV feed server, or thelike. The primary node 110 may act as a relay that routes data receivedas one or more signals such as light signals to a corresponding hub nodeA hub node 112-1, 112-2, 112-n is a network node that is positionedbetween the primary node 110 and a set of one or leaf nodes “A” 150, “B”151, “C” 152, “D” 153, “E” 154, “F” 155, “G” 156, “I” 157, “I” 158, “J”159. Each respective hub node 112-1, 112-2, 112-n groups incoming datalines such as fiber lines into bundles corresponding to a set of one ormore leaf nodes “A” 150, “B” 151, “C” 152, “D” 153, “E” 154, “F” 155,“G” 156, “H” 157, “I” 158, “J” 159.

The primary node 110 is configured to maintain channel subscriptiondata. The channel subscription data may include data describing leafnode membership with respect to each channel of a plurality of channels.In some implementations, the channel subscription data may be maintainedon a per-channel basis using a table. The channel subscription data maybe accessed to determine, for each channel, the network nodes such asleaf nodes “A” 150, “B” 151, “C” 152, “D” 153, “E” 154, “F” 155, “G”156, “H” 157, “I” 158, “J” 159 that are members of the channel. Anetwork node may be a member of a channel if, for example, the networknode has a subscription that allows the network node to access contentprovided by the channel. Access to content provided by the channel mayinclude, for example, access to view the content provided by thechannel. A channel may include, for example, a TV channel.Alternatively, a channel may include, for example, an internetmultimedia channel such as a YouTube channel.

The primary node 110 is configured to generate multiple modifiedmultimedia data frames 130. For example, the primary node 110 maygenerate a modified multimedia data frame 130 per hub node 112-1, 112-2,112-n for each channel of the plurality of channels offered by aparticular streaming server. Alternatively, or in addition, a primarynode 110 may generate a modified multimedia data frame 130 in responseto a request from a network node for content from a particular channel.

The modified multimedia data frame 130 includes a unicast data frame forcommunication in the Media Access Control (MAC) layer that includes aMAC header 132 and a payload 134. The MAC header 132 of the modifiedmultimedia data frame 130 includes a destination address field 140. Thedestination address field 140 of the modified multimedia data frame 130distinguishes the modified multimedia data frame 130 from a conventionalunicast data frame. The modified multimedia data frame 130 includes aHubNodeID 142, a constant 144, and destination address data 146. TheHubNodeID 142 is used to identify a hub node 112-1, 112-2, 112-n wherethe modified multimedia data frame 130 should be routed. The constant144 is used to indicate that (i) the destination address data 146 is alocally administered address, (ii) the data frame is a modifiedmultimedia data frame, or (iii) both.

The destination address data 146 includes data that represents thedestination address of each leaf node of the multiple leaf nodes thatare a destination for the payload of the modified multimedia data frame130. This is different from a conventional unicast data frame which mayinclude only a single destination address of the single node that is theonly destination of the conventional unicast data frame. The destinationaddress data 146 may be created when the multimedia data frame 130 isgenerated. In some implementations, the primary node 110 may generatethe modified multimedia data frame 130 by encoding data describing thedestination address for each leaf node into a bitmap of destinationaddresses that is inserted into the destination address data field 146of the destination address field 140 of the MAC header 132.

The encoding of each destination address of each destination node of theplurality of destination nodes where the payload of the modifiedmultimedia data frame should be routed into the destination addressfield 140 of a MAC header 132 results in a system that uses networkbandwidth more efficiently. This is because instead of using multipleunicast data frames to transmit multimedia content data to multiplerespective nodes of a network, a single modified multimedia data frame130 can be used to transmit multimedia content to multiple nodes of themesh network 120. This reduces network traffic, increases availablebandwidth, and allows for the transmission of additional data using theavailable bandwidth.

In some implementations, the destination address field 140 of the MACheader 132 includes 6 bytes comprised of 48 bits. The least significanttwo bits of the most significant byte may be frozen to a constant suchas 0x11. The rest of the 6 bits of the most significant byte is aHubNodeID 12 that may be used to identify a particular hub node 112-1,112-2, 112-n under the primary node 110. Each bit of the remaining 5bytes is one-to-one mapped to a leaf node under a hub node identified bythe HubNodeID 142 of the destination address field 140 in suchimplementations, the one-to-one mapping established by the remaining 40bits will result in 40 leaf nodes that can be addressed for each hubnode 112-1, 112-2, 112-n. Therefore, this addressing scheme shouldgenerally support 2{circumflex over ( )}6*40=2560 nodes within awireless topology under a primary node. The mapping of leaf nodes to aparticular bit in a 40-bit bitmap is shared by the primary node 110 witheach leaf node ahead of time and does not change during the lifetime ofa neighborhood topology. That is, the mapping of leaf nodes to aparticular bit in a 40-bit bitmap may be updated, for example, only whenthere is a permanent change in the node membership such as when a newsubscriber initiates a new subscription, which can be a relatively rareevent. This quasi-static state of the mapping of leaf nodes to aparticular bit in a 40-bit bitmap increases efficiency over conventionalmulticasting communication which would require dynamic recalculation ofspanning trees for each channel change.

The primary node 110 may route the modified multimedia data frame 130 tothe hub node 112-n that is identified by the HubNodeID 142 of modifiedmultimedia data frame 130. Then, the hub node 112-n may forward themodified multimedia data frame 130 to a first leaf node such as leafnode “A” 150 of the leaf node network that the hub node 112-n isassociated with. Each leaf node “A” 150, “B” 151, “C” 152, “D” 153, “FE”154, “F” 155, “G” 156, “H” 157, “I” 158, “J” 159 is representative of apotential data frame destination point such as a receiving unit (e.g.,set-top-box, television, desktop computer, laptop computer, smartphone,or the like) at the subscriber's home, office, or other location.

A “leaf node” is a node that (i) receives, as a destination endpoint, amodified multimedia data frame and processes the modified multimediadata frame to obtain and use the payload of the multimedia data frameand (ii) transmits, as necessary, modified multimedia data frames to oneor more other nodes, which may include another leaf node or a node thatis not a leaf node. However, some “leaf nodes” such as leaf nodes “H”157, “I” 158, “J” 159, and “G” 156, though capable of performing boththe receiving and transmitting of modified multimedia data frames may bepositioned in a network at a particular point in time such that it isnot necessary for leaf nodes “H” 157, “I” 158, “J” 159, and “G” 156 totransmit any modified multimedia data frames. For example, just becauseleaf nodes “H” 157, “I” 158, “J” 159, and “G” 156 reside in a particularnetwork configuration at a particular point in time where they do nottransmit modified multimedia data frames to other leaf nodes (e.g.,because there are no leaf nodes that are hierarchically arranged afterleaf nodes “H” 157, “I” 158, “J” 159, and “G” 156) does not mean thatsuch leaf nodes cannot transmit modified multimedia data frames, havenot transmitted modified multimedia data frames in the past, or will nottransmit modified multimedia data frames in the future.

For example, the mesh network 120 could be reconfigured at some point inthe future resulting in one or more leaf nodes being hierarchicallyarranged after leaf nodes “H” 157, “F” 158, “J” 159, and “G” 156. Undersuch a scenario, instances may arise where one or more of leaf nodes “H”157, “I” 158, “J” 159, and “G” 156 transmit modified multimedia dataframes. With references to a different example, it is also possible thatthe mesh network 120 may have been configured differently in the pastsuch that one or more of leaf nodes “H” 157, “I” 158, “J” 159, and “G”156 may have had one or more leaf network nodes that were hierarchicallyarranged after the leaf nodes “H” 157, “I” 158, “J” 159, and “G” 156. Insuch instance, one or more of leaf nodes “H” 157, “I” 158, “J” 159, and“G” 156 would have been able to transmit modified multimedia data framesto the other leaf nodes hierarchically arranged after “H” 157, “I” 158,“J” 159, and “G” 156.

Each leaf node may store a membership exchange table such as a bitmaptable 160 that can be used to route modified multimedia data frames suchas modified multimedia data frame 130. The bitmap table 160 may begenerated by the primary node 110 and then be distributed by the primarynode 110 to each respective leaf node “A” 150, “B” 151, “C” 152, “D”153, “E” 154, “F” 155. “G” 156, “H” 157, “I” 158, “J” 159. In someimplementations, the bitmap table 160 may be shared in a pure JavaScriptObject Notation (JSON) format. The JSON format may be shared in a file,via protocol buffer, or a remote procedure call (RPC) from the primarynode 110 to each respective leaf node. This table is only updated upon achange in the subscription status of a leaf node with respect to one ormore channels such as a leaf node initiating a subscription, a leaf nodecancelling a subscription, or the like.

In some implementations, a leaf node subscription cancellation may beignored (and the bitmap table 160 not updated) because the primary node110 will not transmit modified multimedia data frames to a leaf nodethat does not have a subscription. Accordingly, the system 100 can waitto update the bitmap table to remove one or more leaf nodes until alater point in time when one or more new leaf nodes have initiated asubscription.

The bitmap table 160 includes a bitmap address for each leaf node thatis hierarchically organized under a particular hub node such as hub112-n. Each row of the bitmap table 160 includes a bitmap address 160 ato leaf node 160 b mapping 161, 162, 163, 164, 165, 166, 167, 168, 169,170. A leaf node can then compare (i) a set of destination addressesthat have been encoded into a bitmap of destination addresses receivedin a modified multimedia data frame 130 to (ii) the bitmap address 160 aof each leaf node in the bitmap table 160 to determine each of the setof leaf nodes that are a destination for the modified multimedia dataframe 130.

In some implementations, each respective leaf node “A” 150, “B” 151, “C”152, “D” 153, “E” 154, “F” 155, “G” 156, “H” 157, “I” 158, “J” 159 thatreceives a bitmap table 160 can create a bitmask-to-next hop table thatcan be used to facilitate fast and efficient branching operations. Thebitmask-to-next leaf node table can precompute each possible routingdestination for a received bitmap of destination addresses. This makesbranching operations more efficient than just using the bitmap table 160because destination routes for a given bitmap of destination addressesare predetermined and do not need to be computed using the bitmap table160 in real time.

By way of example, the leaf node “A” 150 may receive a modifiedmultimedia data frame 130 and begin performance of a branching operationto route the modified multimedia data frame 130 to its targetdestination nodes. The leaf node “A” 150 can begin performance of thebranching operation by analyzing the destination address data 146 inview of the bitmap table 160 stored at each leaf node Analyzing thedestination address data 146 may include comparing the destinationaddress data 146 obtained from the modified multimedia data frame 130 tothe data maintained by the bitmap table 160.

The multimedia data frame 130 may include a bitmap of destinationaddresses. That is, each bit of the bitmap of destination addresses canindicate whether or not a particular leaf node is a destination of themodified multimedia data frame 130. For example, assume that themultimedia data frame 130 received at leaf node “A” 150 includes abitmap of destination addresses such as “0111110110” 180. Using thebitmap table 160, leaf node “A” 150 can determine that the bitmap ofdestination addresses such as “0111110110” 180 indicates that leaf nodes“B” 151, “C” 152, “E” 154, “F” 155, “G” 156, “H” 157, and “I” 158 aredestinations of the modified multimedia data frame 130. Accordingly,leaf node “A” 150 can determine that the leaf node “A” 150 is not adestination of modified multimedia data frame 130 and perform necessaryrouting operations to transmit the payload associated with the modifiedmultimedia data frame 130 to leaf nodes “B” 151, “C” 152, “E” 154, “F”155, “G” 156, “H” 157, and “I” 158.

The leaf node “A” 150 continues to perform routing of the modifiedmultimedia data frame 130 by grouping leaf node destinations by the oneor more next leaf node destinations. For example, the leaf node “A” 150may determine, based on the bitmap of destination addresses encoded intothe destination address field of the modified multimedia data frame,that the next leaf node destinations include leaf node “B” 151 and leafnode “C” 152. In some implementations, this stage of determining thenext leaf node destinations may include providing the bitmap ofdestination addresses included in the received modified multimedia dataframe 130 to a function that accesses a bitmask-to-next leaf node tableand returns one or more next leaf nodes where the modified multimediadata frame should be routed. Alternatively, the next leaf nodedestinations can be computed by comparing the bitmap of destinationaddresses to the bitmap table 160. The leaf node “A” 150 can then groupeach of the remaining destination addresses into either a leaf node “B”151 category or a leaf node “C” 152 category. In further view of theexample described above, the leaf node “A” 150 may group the destinationaddress for leaf node “H” 157, leaf node “E” 154, and leaf node “I” 158into the leaf node “B” 151 category and group the destination addressesfor leaf node “F” 155 and leaf node “G” 156 into the leaf node “C” 152category.

The leaf node “A” 150 determines whether each of the one or more nextleaf node destinations such as leaf node “B” 151 and leaf node “C” 152are the final leaf node destinations. The leaf node “A” 150 maydetermine whether each of the one or more next leaf nodes destinationsis a final leaf node destination by determining whether the number ofleaf node destinations is greater than one leaf node destination. If thenumber of remaining leaf node destinations is greater than one, the leafnode “A” 150 may determine that the next leaf node destination is not afinal destination node. If the number of remaining leaf nodedestinations is equal to one, leaf node “A” 150 may determine that thenext leaf node destination is a final leaf node destination.

The leaf node “A” 150 may determine that the leaf node “B” category andleaf node “C” category each include more than one leaf node destinationaddress and are therefore not final leaf node destinations. In responseto determining that leaf node “B” 151 and leaf node “C” 152 are notfinal leaf node destinations, the leaf node “A” 150 generates a newmodified multimedia data frame 131 and a new modified multimedia dataframe 132. Alternatively, under a different scenario (e.g., a differentreceived modified multimedia data frame 132), a leaf node such as leafnode “A” 150 may instead determine that one or more next leaf nodes is afinal leaf node destination for a modified multimedia data frame. Insuch instances, the leaf node “A” 150 may generate a unicast data framefor transmission to the final leaf node destination. Such an alternativeis discussed in more detailed below with reference to the example ofFIG. 1.

The modified multimedia data frame 131 is generated in a manner that issimilar to the generation of modified multimedia data frame 130.Specifically, modified multimedia data frame 131 is a duplicate of themodified multimedia data frame 130 except with respect to thedestination address data that is encoded into the destination addressfield of modified multimedia data frame 131. For example, leaf node “A”150 will only encode the set of destination addresses in the leaf nodecategory “B” into the destination address field of the modifiedmultimedia data frame 131. This results in the leaf node “A” 150generating a bitmap of destination addresses “0110001010” 181. Thebitmap of destination addresses “0110010010” 180 indicates that modifiedmultimedia data frame 131 should be routed to leaf node destinationsthat include “B”, “E”, “H”, “I”. The modified multimedia data frame 131can then be routed to leaf node “B” 151. Upon receipt of the modifiedmultimedia data frame 131, leaf node “B” 151 performs branchingoperations.

The modified multimedia data frame 132 is also generated by leaf node“A” 150 in a manner that is similar to the generation of modifiedmultimedia data frame 130. Specifically, modified multimedia data frame132 is a duplicate of the modified multimedia data frame 130 except withrespect to the destination address data that is encoded into thedestination address field of modified multimedia data frame 132. Forexample, leaf node “A” 150 will only encode the set of destinationaddresses in the leaf node category “C” into the destination addressfield of the modified multimedia data frame 132. This results in theleaf node “A” 150 generating a bitmap of destination addresses“0001100100” 182. The bitmap of destination addresses “0001100100” 182indicates that modified multimedia data frame 132 should be routed toleaf node destinations that include “C”, 152 “F” 155, and “G” 156. Themodified multimedia data frame 132 can then be routed to leaf node “C”151. Upon receipt of the modified multimedia data frame 132, leaf node“C” 152 performs branching operations.

The leaf node “B” 151 may receive the modified multimedia data frame 131and perform branching operations in a manner similar to leaf node “A”150. Branching includes the leaf node “B” grouping subsequent leaf nodedestinations identified by the destination address field 181 of themodified multimedia data frame 131. For example, the leaf node “B” 151may determine that the next leaf node destinations include leaf node “H”157 and leaf node “E” 154. In some implementations, this stage ofdetermining the next leaf node destinations may include providing thebitmap of destination addresses included in the received modifiedmultimedia data frame 131 to a function that accesses a bitmask-to-nextleaf node table and returns one or more next leaf nodes where themodified multimedia data frame should be routed. Alternatively, the nextleaf node destinations can be computed by comparing the bitmap ofdestination addresses to the bitmap table 160. The leaf node “B” 151 canthen group each of the remaining destination addresses into either aleaf node “H” 157 category or a leaf node “E” 154 category. In furtherview of the example described above, the leaf node “B” 151 may group thedestination address for leaf node “H” 157 into the leaf node “H” 157category and group the destination addresses for leaf node “E” 154 andleaf node “I” 158 into the leaf node “E” 154 category.

The leaf node “B” 151 determines whether each of the one or more nextleaf node destinations such as leaf node “H” 157 and leaf node “E” 154is a final leaf node destination. The leaf node “B” 151 may determinewhether a particular leaf node destination is a final leaf nodedestination by determining whether the number of leaf node destinationsis greater than one leaf node destination. If the number of remainingleaf node destinations is greater than one, the leaf node “B” 151 maydetermine that the next leaf node destination is not a final destinationnode. If the number of remaining leaf node destinations is equal to one,leaf node “B” 151 may determine that the next leaf node destination is afinal leaf node destination.

The leaf node “B” 150 may determine that the leaf node “H” categoryincludes only one leaf node destination address and is therefore a finalleaf node destination. In this instance, since the next node (i.e., node“D”) of the mesh network of the “H” category is not the finaldestination node of the message 133, the leaf node “B” 150 generates amodified multimedia data frame 133 with an address of “0010000000” 183and transmits the modified multimedia data frame 133 to node “D”.

The node “D” receives the modified multimedia data frame 133 and performbranching operations in a manner similar to leaf node “A” 150 and leafnode “B” 151 prior. For example, leaf node “D” 153 may determine thatthe next leaf node destination is leaf node “H” 157. In someimplementations, this stage of determining the next leaf nodedestinations may include providing the bitmap of destination addressesincluded in the received modified multimedia data frame 133 to afunction that accesses a bitmask-to-next leaf node table and returns oneor more next leaf nodes where the modified multimedia data frame shouldbe routed. Alternatively, the next leaf node destinations can becomputed by comparing the bitmap of destination addresses to the bitmaptable 160. In this branching operation, the leaf node “D” 153 candetermine that there are no other leaf node destination addresses in thebitmap of destination addresses beyond leaf node “H” 157.

Grouping the leaf node destination addresses results in a single leafnode “H” 157 category that includes a single leaf node destination. Theleaf node “D” 153 can determine that the leaf node “H” 157 category onlyincludes a single leaf node destination address. In response todetermining that leaf node “H” 157 category only includes a single leafnode destination address, the leaf node “D” 153 generates a new unicastmessage 134 for transmission to a final leaf node destination of leafnode “H” 157. The destination address field of the unicast data frame134 includes an address “H_Addr” 184 of the leaf node “H” 157. Theaddress “H_Addr” is the particular address of the leaf node “H” 157. Theunicast data frame 134 is transmitted by leaf node “D” 153 to leaf node“H” 157.

Separately, the leaf node “B” 151 may determine that the leaf node “E”154 category includes more than one leaf node destination address and istherefore not a final leaf node destination. In response to determiningthat the leaf node “E” 154 is not a final leaf node destination for themodified multimedia data frame 131, the leaf node “B” 151 generates anew modified multimedia data frame 135.

The modified multimedia data frame 135 is generated in a manner that issimilar to the generation of modified multimedia data frame 131.Specifically, modified multimedia data frame 135 is a duplicate of themodified multimedia data frame 131 except with respect to thedestination address data that is encoded into the destination addressfield of modified multimedia data frame 135. For example, leaf node “B”151 will only encode the set of destination addresses identified asbeing associated with the leaf node category “E” into the destinationaddress field of the modified multimedia data frame 135. This results inthe leaf node “B” 151 generating a bitmap of destination addresses“0100010000” 185 for inclusion in the destination address field of themodified multimedia data frame 135. The bitmap of destination addresses“0100010000” 185 indicates that modified multimedia data frame 135should be routed to leaf node destinations that include leaf node “E”154 and leaf node “I” 158. The modified multimedia data frame 135 canthen be routed to leaf node “E” 154. Upon receipt of the modifiedmultimedia data frame 135, leaf node “E” 154 performs branchingoperations.

The leaf node “E” 154 receives the modified multimedia data frame 135and performs branching operations in a manner similar to leaf node “A”150 and leaf node “B” 151 prior. For example, leaf node “E” 154 maydetermine that the next leaf node destination is leaf node “I” 158. Insome implementations, this stage of determining the next leaf nodedestinations may include providing the bitmap of destination addressesincluded in the received modified multimedia data frame 135 to afunction that accesses a bitmask-to-next leaf node table and returns oneor more next leaf nodes where the modified multimedia data frame shouldbe routed. Alternatively, the next leaf node destinations can becomputed by comparing the bitmap of destination addresses to the bitmaptable 160. In this branching operation, the leaf node “E” 154 candetermine that there are no other leaf node destination addresses in thebitmap of destination addresses beyond leaf node “I” 158.

Grouping the leaf node destination addresses results in a single leafnode “1” 158 category that includes a single leaf node destination. Theleaf node “E” 154 can determine that the leaf node “I” 158 category onlyincludes a single leaf node destination address. In response todetermining that leaf node “I” 158 category only includes a single leafnode destination address, the leaf node “E” 154 generates a new unicastmessage 136 for transmission to a final leaf node destination of leafnode “I” 158. The destination address field of the unicast data frame136 includes an address “I_Addr” 186 of the leaf node “I” 158. Theaddress “I_Addr” is the particular address of the leaf node “I” 158. Theunicast data frame 136 is transmitted by leaf node “E” 154 to leaf node“I” 158.

The aforementioned description of the branching operations performed bythe one or more leaf network nodes in the network system 100 provides anexample of how the system 100 routes modified multimedia data framesfrom a primary node to a respective hub node and through a configurationof leaf nodes. The same process may be used to route multimedia dataframe data frames through the remaining leaf nodes of FIG. 1. Forexample, the leaf node “A” 150 may transmit the modified multimedia dataframe 132 to the leaf node “C”. The leaf node “C” 152 performs branchingoperations, and generates respective unicast data frames 137 and 138.Each respective unicast data frame 137 and 138 may include an addressfor a particular leaf node that is the only destination for therespective unicast data frames 137 and 138. In the example of FIG. 1,the unicast message 137 includes an address of “F_Addr” 187 and theunicast message 138 includes the address of “G_Addr.” Then, the unicastdata frames 137 and 138 may be transmitted to their respective finaldestinations of leaf node “F” 155 and leaf node “G” 156, respectively.

The aforementioned routing of modified multimedia data frames providessignificant advantages over conventional methods by using a data framewith an address field that has been modified in a manner that allows formulticast-like communication using a unicast data frame. This allows thesystem 100 to efficiently route modified multimedia data frames withoutthe frequent recalculation of multicast routing spanning trees, whichwould be required in a multicast broadcasting system in response tofrequent link loss in the wireless network and a user's fast channelsweeping while searching from channel-to-channel for a channel the userwants to watch. If a conventional multicast broadcasting system wasused, modified multimedia data frames would not be able to reachdestination leaf nodes or more than optimal bandwidth would be consumedduring recalculation of the routing spanning trees.

The example of FIG. 1 provides an example of a plurality leaf networknodes that are addressed using a 10-bit bitmap. However, the presentdisclosure provides for a destination address field that can use up to40-bits. In combination with the 6-bit HubNodeID, this can allow for2{circumflex over ( )}6*40=2560 leaf nodes under a single primary node.However, the present disclosure can allow for even greater networksizes. For example, the one or more significant bits of the 40-bitdestination address field can be used as a cluster-id. For example, themost significant bit can be used to identify a first cluster node “1”associated with a hub node and a second cluster node “0” identified bythe same hub node. Then, the remaining 39 bits can be used to identify39 nodes under the first cluster node associated with the “1” mostsignificant bit and also 39 nodes under the second cluster nodeassociated with the “0” most significant bit for a total of 78 leafnetwork nodes under a single hub node. Using the same 6-bit HubNodeID,one could reach 2{circumflex over ( )}6*2{circumflex over ( )}1*39=4.992leaf nodes under a single primary node. Routing of modified multimediadata frames using a cluster-id would involve an additional stage ofrouting the modified multimedia data frame to a corresponding clusternetwork node identified by the cluster-id by the hub node. Once themodified multimedia data frame is received by the cluster network node,branching operations can be performed using the remaining bits of thedestination address data in the manner described above. Accordingly, byapportioning one or more bits of the destination address field for useas a cluster-id, the present disclosure can use a modified multimediadata frame to address greater numbers of leaf network nodes.

The example of FIG. 1 described above includes an example where the leafnode A receives a modified multimedia data frame 130 that includesdestination address data 146 includes data that represents thedestination address of each leaf node of the multiple leaf nodes thatare a destination for the payload of the modified multimedia data frame130. The destination address data 146 may include, for example, anencoded bitmap of destinations addresses. However, in some instances,leaf node A may be the only destination of a particular data frame. Insuch instances, a hub nodes such as hub node 112-n may generate aunicast message 190 for transmission to leaf node A that includes theaddress “A_Addr” 190 a. The address “A_Addr” 190 a is the particularaddress of the leaf node “A” 150. The unicast data frame 190 istransmitted by hub node 112-n to leaf node “A” 150 in those instanceswhere a leaf node such as leaf node “A” 150 receives unicast messagesuch as unicast message 190, the leaf node “A” 150 will not performbranching.

FIG. 2 is a flowchart of an example of a process 200 for generatingmodified multimedia data frames. For convenience, the process 200 willbe described as being performed by a system of one or more computerslocated in one or more locations. For example, a system such as thesystem 100 can be appropriately programmed in accordance with thisspecification to perform the process 200.

The process 200 begins with the system maintaining 210, by a firstnetwork node, channel membership data that includes data indicating leafnode membership for each of a plurality of channels. In someimplementations, the channel membership data may be maintained using atable on a per-channel basis. The channel subscription data may be usedto determine, for each channel, the network nodes that are members ofthe channel. A leaf network node may have a membership to a channel if,for example, the leaf network node has a subscription that allows theleaf network node to access content provided by the channel. Access tocontent provided by the channel may include, for example, access to viewthe content provided by the channel. A channel may include, for example,a TV channel. Alternatively, a channel may include, for example, aninternet multimedia channel such as a YouTube channel.

The system determines 220, for each channel of the plurality ofchannels, whether each of a plurality of leaf network nodes issubscribed to access the channel. Determining whether a leaf node issubscribed to access the channel may include accessing the channelmembership data maintained by the first network node. For example, thesystem can access a channel membership data table and determine whetherone or more leaf nodes are listed as being associated with asubscription to access the channel.

The system can generate 230, for each channel with at least onesubscribed leaf node, a modified multimedia data frame for use in awireless network. The generated modified multimedia data frame for thechannel is a data structure that includes (i) a hub node identifier,(ii) a constant, (iii) destination address data that describes adestination address for each leaf node that is associated with thechannel, and (iv) a payload. The hub node identifier is used to identifya hub node where the generated modified multimedia data frame should berouted. The constant is used to indicate that the destination addressdata of the modified multimedia data frame is a locally administeredaddress, (ii) the data frame is a modified multimedia data frame, or(iii) both. The payload may include, for example, a portion of contentbroadcast by the channel.

The destination address data of the modified multimedia data frame isdifferent from the destination address included in a conventionalunicast data frame because the destination address data includes datathat is a representation of a destination address of each of multipleleaf nodes that are a destination for the payload of the modifiedmultimedia data frame. This is different from a conventional unicastdata frame which may include only a single destination address of thesingle node that is the destination of the conventional unicast dataframe. The destination address data may be created when the multimediadata frame is generated. In some implementations, generating themodified multimedia data frame includes encoding data describing thedestination address for each leaf node into a bitmap of destinationaddresses that is used to populate the destination address field of theMAC header.

The system transmits 240, by the first network node, each generatedmodified multimedia data frame to a second network node. In someimplementations, the second network node may include a hub node that isidentified by the hub node identifier of the modified multimedia dataframe.

The system performing the aforementioned process generates a modifiedmultimedia data frame for each channel that is associated with at leastone subscriber. However, there may be instances wherein one or moreparticular channels do not have any subscribers. In such instances,system can decide to not generate a modified multimedia data frame forthe channel.

FIG. 3 is a flowchart of an example of a process 300 for routingmodified multimedia data frames. For convenience, the process 300 willbe described as being performed by a system of one or more computerslocated in one or more locations. For example, a system such as thesystem 100 can be appropriately programmed in accordance with thisspecification to perform the process 300.

The process 300 begins with a leaf network node receiving 310 a modifiedmultimedia data frame. The received modified multimedia data frame is adata structure that includes destination address data that describes adestination address for each leaf node that is associated with thechannel. The destination address data may have been created when themultimedia data frame was generated. In some implementations, thedestination address data may be encoded as a bitmap of destinationaddresses for each leaf node that is destination of the multimedia dataframe. The leaf network node may initiate branching operations describedby stages 320 to 360 below upon receipt of the modified multimedia dataframe.

The system analyzes 320 the destination address data of a receivedmodified multimedia data frame. Analyzing 320 the destination addressdata of a received modified multimedia data frame may include, forexample, comparing the destination address data of the received modifiedmultimedia data frame to the data stored in a bitmap table at the leafnetwork node. The leaf network node may use the bitmap table todetermine each of the one or more leaf nodes that are a destination ofthe multimedia data frame. For example, in some implementations, thebitmap table may include a bitmap-to-leaf network node mapping. Thus,the bitmap table can be used to translate the bitmap of destinationaddresses into a plurality of leaf node destination addresses.

The system may identity 330 one or more next leaf nodes that are adestination of the modified multimedia data frame. In someimplementations, stage 330 may include identifying the next leaf nodedestinations may providing the bitmap of destination addresses obtainedfrom the received modified multimedia data frame to a function thataccesses a precomputed destination address data-to-next leaf node tableand returns one or more next leaf nodes where the modified multimediadata frame should be routed. In some implementations, the destinationaddress data-to-next leaf node table is a bitmap-to-next leaf nodetable. Alternatively, the next leaf node destinations can be computed atruntime by comparing the destination address data to a routing table atthe leaf node such as a bitmap table described herein.

They system may group 340 each of the plurality of destination addressesidentified based on the destination address data based on the next leafnode destinations. Grouping each of the plurality of destinationaddresses identified based on the destination address data includesclustering each destination address under each respective next leaf nodedestination based on each respective leaf node's hierarchicalrelationship to the next leaf node. For example, a leaf node that is achild node to a next leaf node destination will be grouped with the nextleaf node destination.

The system may determine 350 whether each respective next leaf node isthe only remaining leaf network node destination encoded within thedestination address of the modified multimedia data frame received atstage 310. The determining stage 350 may include identifying, by theleaf network node that received the modified multimedia data frame atstage 310, a number of subsequent network nodes that are a destinationof the at least one modified multimedia data frame. In response todetermining that the number of subsequent network nodes is greater thanone leaf network node, the leaf network node may generate a modifiedmultimedia data frame that includes (i) data that describes adestination address each of the subsequent network nodes and (ii) a copyof the payload. The data that describes a destination address of each ofthe subsequent network nodes may include a bitmap of the destinationaddresses of the subsequent network nodes. Alternatively, in response todetermining that the number of subsequent network nodes equal to oneleaf network node, the leaf network node may generate a unicast dataframe that includes (i) data that describes a destination address of theone subsequent network node and (ii) a copy of the payload. In thisscenario, the data that describes a destination address of the onesubsequent node includes only a single leaf node destination address.

FIG. 4 is a block diagram of components of a system for generating androuting modified multimedia data frames.

The computing device 400 is intended to represent various forms ofdigital computers, such as laptops, desktops, workstations, personaldigital assistants, servers, blade servers, mainframes, and otherappropriate computers. The mobile computing device 450 is intended torepresent various forms of mobile computing devices, such as desktops,laptops, tablets, personal digital assistants, cellular telephones,smart-phones, and other similar computing devices. The components shownhere, their connections and relationships, and their functions, aremeant to be examples only, and are not meant to be limiting.

The computing device 400 includes a processor 402, a memory 404, astorage device 406, a high-speed interface 408 connecting to the memory404 and multiple high-speed expansion ports 410, and a low-speedinterface 412 connecting to a low-speed expansion port 414 and thestorage device 406. Each of the processor 402, the memory 404, thestorage device 406, the high-speed interface 408, the high-speedexpansion ports 410, and the low-speed interface 412, are interconnectedusing various busses, and may be mounted on a common motherboard or inother manners as appropriate. The processor 402 can process instructionsfor execution within the computing device 400, including instructionsstored in the memory 404 or on the storage device 406 to displaygraphical information for a graphical user interface (GUI) on anexternal input/output device, such as a display 416 coupled to thehigh-speed interface 408. In other implementations, multiple processorsand/or multiple buses may be used, as appropriate, along with multiplememories and types of memory. Also, multiple computing devices may beconnected, with each device providing portions of the necessaryoperations (e.g., as a server bank, a group of blade servers, or amultiprocessor system).

The memory 404 stores information within the computing device 400. Insome implementations, the memory 404 is a volatile memory unit or units.In some implementations, the memory 404 is a non-volatile memory unit orunits. The memory 404 may also be another form of computer-readablemedium, such as a magnetic or optical disk. The storage device 406 iscapable of providing mass storage for the computing device 400. In someimplementations, the storage device 406 may be or contain acomputer-readable medium, such as a floppy disk device, a hard diskdevice, an optical disk device, or a tape device, a flash memory orother similar solid state memory device, or an array of devices,including devices in a storage area network or other configurations. Inother implementations, storage device 406 may include one or multiplecloud-based storage devices. Instructions can be stored in aninformation carrier. The instructions, when executed by one or moreprocessing devices (for example, processor 402), perform one or moremethods, such as those described above. The instructions can also bestored by one or more storage devices such as computer- ormachine-readable mediums (for example, the memory 404, the storagedevice 406, or memory on the processor 402).

The high-speed interface 408 manages bandwidth-intensive operations forthe computing device 400, while the low-speed interface 412 manageslower bandwidth-intensive operations. Such allocation of functions is anexample only. In some implementations, the high-speed interface 408 iscoupled to the memory 404, the display 416 (e.g., through a graphicsprocessor or accelerator), and to the high-speed expansion ports 410,which may accept various expansion cards. In the implementation, thelow-speed interface 412 is coupled to the storage device 406 and thelow-speed expansion port 414. The low-speed expansion port 414, whichmay include various communication ports (e.g., USB, Bluetooth, Ethernet,wireless Ethernet) may be coupled to one or more input/output devices,such as a keyboard, a pointing device, a scanner, or a networking devicesuch as a switch or router, e.g., through a network adapter.

The computing device 400 may be implemented in a number of differentforms, as shown in the figure. For example, it may be implemented as astandard server 420, or multiple times in a group of such servers. Inaddition, it may be implemented in a personal computer such as a laptopcomputer 422. It may also be implemented as part of a rack server system424. Alternatively, components from the computing device 400 may becombined with other components in a mobile computing device, such as amobile computing device 450. Each of such devices may contain one ormore of the computing device 400 and the mobile computing device 450,and an entire system may be made up of multiple computing devicescommunicating with each other.

The mobile computing device 450 includes a processor 452, a memory 464,an input/output device such as a display 454, a communication interface466, and a transceiver 468, among other components. The mobile computingdevice 450 may also be provided with a storage device, such as amicro-drive or other device, to provide additional storage. Each of theprocessor 452, the memory 464, the display 454, the communicationinterface 466, and the transceiver 468, are interconnected using variousbuses, and several of the components may be mounted on a commonmotherboard or in other manners as appropriate.

The processor 452 can execute instructions within the mobile computingdevice 450, including instructions stored in the memory 464. Theprocessor 452 may be implemented as a chipset of chips that includeseparate and multiple analog and digital processors. The processor 452may provide, for example, for coordination of the other components ofthe mobile computing device 450, such as control of user interfaces,applications run by the mobile computing device 450, and wirelesscommunication by the mobile computing device 450.

The processor 452 may communicate with a user through a controlinterface 458 and a display interface 456 coupled to the display 454.The display 454 may be, for example, a TFT (Thin-Film-Transistor LiquidCrystal Display) display or an OLED (Organic Light Emitting Diode)display, or other appropriate display technology. The display interface456 may comprise appropriate circuitry for driving the display 454 topresent graphical and other information to a user. The control interface458 may receive commands from a user and convert them for submission tothe processor 452 in addition, an external interface 462 may providecommunication with the processor 452, so as to enable near areacommunication of the mobile computing device 450 with other devices. Theexternal interface 462 may provide, for example, for wired communicationin some implementations, or for wireless communication in otherimplementations, and multiple interfaces may also be used.

The memory 464 stores information within the mobile computing device450. The memory 464 can be implemented as one or more of acomputer-readable medium or media, a volatile memory unit or units, or anon-volatile memory unit or units. An expansion memory 474 may also beprovided and connected to the mobile computing device 450 through anexpansion interface 472, which may include, for example, a SIMM (SingleIn Line Memory Module) card interface. The expansion memory 474 mayprovide extra storage space for the mobile computing device 450, or mayalso store applications or other information for the mobile computingdevice 450. Specifically, the expansion memory 474 may includeinstructions to carry out or supplement the processes described above,and may include secure information also. Thus, for example, theexpansion memory 474 may be provided as a security module for the mobilecomputing device 450, and may be programmed with instructions thatpermit secure use of the mobile computing device 450. In addition,secure applications may be provided via the SIMM cards, along withadditional information, such as placing identifying information on theSIMM card in a non-hackable manner.

The memory may include, for example, flash memory and/or NVRAM memory(non-volatile random access memory), as discussed below. In someimplementations, instructions are stored in an information carrier thatthe instructions, when executed by one or more processing devices (forexample, processor 452), perform one or more methods, such as thosedescribed above. The instructions can also be stored by one or morestorage devices, such as one or more computer- or machine-readablemediums (for example, the memory 464, the expansion memory 474, ormemory on the processor 452). In some implementations, the instructionscan be received in a propagated signal, for example, over thetransceiver 468 or the external interface 462.

The mobile computing device 450 may communicate wirelessly through thecommunication interface 466, which may include digital signal processingcircuitry where necessary. The communication interface 466 may providefor communications under various modes or protocols, such as GSM (GlobalSystem for Mobile communications), SMS (Short Message Service), EMS(Enhanced Messaging Service), or MMS messaging (Multimedia MessagingService), CDMA (code division multiple access), TDMA (time divisionmultiple access), PDC (Personal Digital Cellular), WCDMA (Wideband CodeDivision Multiple Access), CDMA2000, or GPRS (General Packet RadioService), among others. Such communication may occur, for example,through the transceiver 468 using a radio-frequency. In addition,short-range communication may occur, such as using a Bluetooth, WiFi, orother such transceiver. In addition, a GPS (Global Positioning System)receiver module 470 may provide additional navigation- andlocation-related wireless data to the mobile computing device 450, whichmay be used as appropriate by applications running on the mobilecomputing device 450.

The mobile computing device 450 may also communicate audibly using anaudio codec 460, which may receive spoken information from a user andconvert it to usable digital information. The audio codec 460 maylikewise generate audible sound for a user, such as through a speaker,e.g., in a handset of the mobile computing device 450. Such sound mayinclude sound from voice telephone calls, may include recorded sound(e.g., voice messages, music files, etc.) and may also include soundgenerated by applications operating on the mobile computing device 450.

The mobile computing device 450 may be implemented in a number ofdifferent forms, as shown in the figure. For example, it may beimplemented as a cellular telephone 480. It may also be implemented aspart of a smart-phone 482, personal digital assistant, tablet, laptop,desktop, or other similar mobile computing device.

Embodiments of the subject matter, the functional operations and theprocesses described in this specification can be implemented in digitalelectronic circuitry, in tangibly-embodied computer software orfirmware, in computer hardware, including the structures disclosed inthis specification and their structural equivalents, or in combinationsof one or more of them. Embodiments of the subject matter described inthis specification can be implemented as one or more computer programs,i.e., one or more modules of computer program instructions encoded on atangible nonvolatile program carrier for execution by, or to control theoperation of, data processing apparatus. Alternatively, or in addition,the program instructions can be encoded on an artificially generatedpropagated signal, e.g., a machine-generated electrical, optical, orelectromagnetic signal that is generated to encode information fortransmission to suitable receiver apparatus for execution by a dataprocessing apparatus. The computer storage medium can be amachine-readable storage device, a machine-readable storage substrate, arandom or serial access memory device, or a combination of one or moreof them.

The term “data processing apparatus” encompasses all kinds of apparatus,devices, and machines for processing data, including by way of example aprogrammable processor, a computer, or multiple processors or computers.The apparatus can include special purpose logic circuitry, e.g., an FPGA(field programmable gate array) or an ASIC (application specificintegrated circuit). The apparatus can also include, in addition tohardware, code that creates an execution environment for the computerprogram in question, e.g., code that constitutes processor firmware, aprotocol stack, a database management system, an operating system, or acombination of one or more of them.

A computer program (which may also be referred to or described as aprogram, software, a software application, a module, a software module,a script, or code) can be written in any form of programming language,including compiled or interpreted languages, or declarative orprocedural languages, and it can be deployed in any form, including as astandalone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment. A computer program may, butneed not, correspond to a file in a file system. A program can be storedin a portion of a file that holds other programs or data (e.g., one ormore scripts stored in a markup language document), in a single filededicated to the program in question, or in multiple coordinated files(e.g., files that store one or more modules, sub programs, or portionsof code). A computer program can be deployed to be executed on onecomputer or on multiple computers that are located at one site ordistributed across multiple sites and interconnected by a communicationnetwork.

The processes and logic flows described in this specification can beperformed by one or more programmable computers executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

Computers suitable for the execution of a computer program include, byway of example, can be based on general or special purposemicroprocessors or both, or any other kind of central processing unit.Generally, a central processing unit will receive instructions and datafrom a read-only memory or a random access memory or both. The essentialelements of a computer are a central processing unit for performing orexecuting instructions and one or more memory devices for storinginstructions and data. Generally, a computer will also include, or beoperatively coupled to receive data from or transfer data to, or both,one or more mass storage devices for storing data. e.g., magnetic,magneto optical disks, or optical disks. However, a computer need nothave such devices. Moreover, a computer can be embedded in anotherdevice, e.g., a mobile telephone, a personal digital assistant (PDA), amobile audio or video player, a game console, a Global PositioningSystem (GPS) receiver, or a portable storage device (e.g., a universalserial bus (USB) flash drive), to name just a few.

Computer readable media suitable for storing computer programinstructions and data include all forms of nonvolatile memory, media andmemory devices, including by way of example semiconductor memorydevices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks,e.g., internal hard disks or removable disks; magneto optical disks; andCD-ROM and DVD-ROM disks. The processor and the memory can besupplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,feedback provided to the user can be any form of sensory feedback, e.g.,visual feedback, auditory feedback, or tactile feedback; and input fromthe user can be received in any form, including acoustic, speech, ortactile input. In addition, a computer can interact with a user bysending documents to and receiving documents from a device that is usedby the user; for example, by sending web pages to a web browser on auser's client device in response to requests received from the webbrowser.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described in this specification, or any combination of one ormore such back end, middleware, or front end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specific implementation details,these should not be construed as limitations on the scope of what may beclaimed, but rather as descriptions of features that may be specific toparticular embodiments. Certain features that are described in thisspecification in the context of separate embodiments can also beimplemented in combination in a single embodiment. Conversely, variousfeatures that are described in the context of a single embodiment canalso be implemented in multiple embodiments separately or in anysuitable subcombination. Moreover, although features may be describedabove as acting in certain combinations and even initially claimed assuch, one or more features from a claimed combination can in some casesbe excised from the combination, and the claimed combination may bedirected to a subcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Particular embodiments of the subject matter have been described. Otherembodiments are within the scope of the following claims. For example,the actions recited in the claims can be performed in a different orderand still achieve desirable results. As one example, the processesdepicted in the accompanying figures do not necessarily require theparticular order shown, or sequential order, to achieve desirableresults. In certain implementations, multitasking and parallelprocessing may be advantageous. Other steps may be provided, or stepsmay be eliminated, from the described processes. Accordingly, otherimplementations are within the scope of the following claims.

What is claimed is:
 1. A method comprising: determining, by a dataprocessing apparatus, one or more leaf nodes subscribed to access agiven channel based on channel membership data including leaf nodemembership for a plurality of channels; generating, by the dataprocessing apparatus, based on the one or more leaf nodes subscribed toaccess the given channel, a modified multimedia data frame for the givenchannel, the modified multimedia data frame including: (i) a hub nodeidentifier identifying a hub node that serves at least one of the one ormore leaf nodes subscribed to access the given channel, (ii) addressdata describing a destination address of each leaf node served by thehub node and subscribed to access the given channel, wherein at least aportion of the address data describes the destination address of eachleaf node according to a bitmap in which each bit in the bit mapidentities a particular leaf node, the address data being an encodedbitmap of destination addresses; and (iii) a payload; and transmitting,by the data processing apparatus, the generated modified multimedia dataframe from a first network node to a second network node.
 2. The methodof claim 1, further comprising, in response to determining, by the dataprocessing apparatus, that the one or more leaf nodes is/are notsubscribed to access the given channel, not generating the modifiedmultimedia data frame for the given channel.
 3. The method of claim 1,wherein the modified multimedia data frame includes a unicast data framecomprising a MAC Header and a payload, and wherein the MAC Headerincludes a destination address field.
 4. The method of claim 3, whereingenerating the modified multimedia data frame comprises: encoding thedestination address for each leaf node subscribed to access the givenchannel into the encoded bitmap of destination addresses; and populatinga destination address field with the encoded bitmap of destinationaddresses.
 5. The method of claim 4, further comprising: receiving, bythe data processing apparatus, at the second network node at least onemodified multimedia data frame; identifying, by the data processingapparatus, based on the encoded bitmap of destination addresses, anumber of subsequent network nodes that are a destination of the atleast one modified multimedia data frame; and in response to determiningthat the number of subsequent network nodes is greater than one networknode, generating, by the data processing apparatus, a modifiedmultimedia data frame that includes (i) subsequent address datadescribing a destination address of each of the subsequent network nodesand (ii) a copy of the payload.
 6. The method claim 4, furthercomprising: receiving, by the data processing apparatus, at the secondnetwork node at least one modified multimedia data frame; identifying,by the data processing apparatus, based on the encoded bitmap ofdestination addresses, a number of subsequent network nodes that are adestination of the at least one modified multimedia data frame; and inresponse to determining that the number of subsequent network nodes isequal to one network node, generating, by the data processing apparatus,a unicast data frame that includes (i) subsequent address datadescribing a destination address of the one subsequent network node and(ii) a copy of the payload.
 7. A system comprising: one or more dataprocessing apparatuses; and one or more storage devices in communicationwith the one or more data processing apparatuses, the one or morestorage devices storing instructions that when executed on the one ormore data processing apparatuses cause the one or more data processingapparatuses to perform operations comprising: determining one or moreleaf nodes subscribed to access a given channel based on channelmembership data including leaf node membership for a plurality ofchannels; generating based on the one or more leaf nodes subscribed toaccess the given channel, a modified multimedia data frame for the givenchannel, the modified multimedia data frame including: (i) a hub nodeidentifier identifying a hub node that serves at least one of the one ormore leaf nodes subscribed to access the given channel; (ii) addressdata describing a destination address of each leaf node served by thehub node and subscribed to access the given channel, wherein at least aportion of the address data describes the destination address of eachleaf node according to a bitmap in which each bit in the bit mapidentifies a particular leaf node, the address data being an encodedbitmap of destination addresses; and (iii) a payload; and transmittingthe generated modified multimedia data frame from a first network nodeto a second network node.
 8. The system of claim 7, wherein theoperations further comprise, in response to determining that the one ormore leaf nodes is/are not subscribed to access the given channel, notgenerating the modified multimedia data frame for the given channel. 9.The system of claim 7, wherein the modified multimedia data frameincludes a unicast data frame comprising a MAC Header and a payload, andwherein the MAC Header includes a destination address field.
 10. Thesystem of claim 9, wherein generating the modified multimedia data framecomprises: encoding the destination address for each leaf nodesubscribed to access the given channel into the encoded bitmap ofdestination addresses; and populating a destination address field withthe encoded bitmap of destination addresses.
 11. The system of claim 10,wherein the operations further comprise: receiving, by the one or moredata processing apparatuses, at the second network node at least onemodified multimedia data frame; identifying based on the encoded bitmapof destination addresses, a number of subsequent network nodes that area destination of the at least one modified multimedia data frame; and inresponse to determining that the number of subsequent network nodes isgreater than one network node, generating a modified multimedia dataframe that includes (i) subsequent address data describing a destinationaddress of each of the subsequent network nodes and (ii) a copy of thepayload.
 12. The system claim 10, wherein the operations furthercomprise: receiving, by the one or more data processing apparatuses, atthe second network node at least one modified multimedia data frame;identifying based on the encoded bitmap of destination addresses, anumber of subsequent network nodes that are a destination of the atleast one modified multimedia data frame; and in response to determiningthat the number of subsequent network nodes is equal to one networknode, generating a unicast data frame that includes (i) subsequentaddress data describing a destination address of the one subsequentnetwork node and (ii) a copy of the payload.
 14. A non-transitorycomputer-readable storage device having stored thereon instructions,which, when executed by a data processing apparatus, cause the dataprocessing apparatus to perform operations comprising: determining oneor more leaf nodes subscribed to access a given channel based on channelmembership data including leaf node membership for a plurality ofchannels; generating based on the one or more leaf nodes subscribed toaccess the given channel, a modified multimedia data frame for the givenchannel, the modified multimedia data frame including: (i) a hub nodeidentifier identifying a hub node that serves at least one of the one ormore leaf nodes subscribed to access the given channel, (ii) addressdata describing a destination address of each leaf node served by thehub node and subscribed to access the given channel, wherein at least aportion of the address data describes the destination address of eachleaf node according to a bitmap in which each bit in the bit mapidentities a particular leaf node, the address data being an encodedbitmap of destination addresses; and (iii) a payload; and transmittingthe generated modified multimedia data frame from a first network nodeto a second network node.
 15. The non-transitory computer-readablestorage device of claim 14, wherein the operations further comprise, inresponse to determining that the one or more leaf nodes is/are notsubscribed to access the given channel, not generating the modifiedmultimedia data frame for the given channel.
 16. The non-transitorycomputer-readable storage device of claim 14, wherein the modifiedmultimedia data frame includes a unicast data frame comprising a MACHeader and a payload, and wherein the MAC Header includes a destinationaddress field.
 17. The non-transitory computer-readable storage deviceof claim 16, wherein generating the modified multimedia data framecomprises: encoding the destination address for each leaf nodesubscribed to access the given channel into the encoded bitmap ofdestination addresses, and populating a destination address field withthe encoded bitmap of destination addresses.
 18. The non-transitorycomputer-readable storage device of claim 17, wherein the operationsfurther comprise: receiving, by the data processing apparatus, at thesecond network node at least one modified multimedia data frame;identifying based on the encoded bitmap of destination addresses, anumber of subsequent network nodes that are a destination of the atleast one modified multimedia data frame; and in response to determiningthat the number of subsequent network nodes is greater than one networknode, generating a modified multimedia data frame that includes (i)subsequent address data describing a destination address of each of thesubsequent network nodes and (ii) a copy of the payload.
 19. Thenon-transitory computer-readable storage device claim 17, wherein theoperations further comprise: receiving, by the data processingapparatus, at the second network node at least one modified multimediadata frame; identifying based on the encoded bitmap of destinationaddresses, a number of subsequent network nodes that are a destinationof the at least one modified multimedia data frame, and in response todetermining that the number of subsequent network nodes is equal to onenetwork node, generating a unicast data frame that includes (i)subsequent address data describing a destination address of the onesubsequent network node and (ii) a copy of the payload.